home *** CD-ROM | disk | FTP | other *** search
/ PC/CD Gamer UK 129 / CD Gamer Issue 129 (December 2003) (Disc 1).ISO / Addons / Vietcong Map editor / max plugins / scripts / pteroTools / _wobbleRollOut.msp < prev    next >
Encoding:
Text File  |  2003-09-12  |  5.9 KB  |  119 lines

  1. rollout WobbleRollOut "Wobble" rolledUp:true (
  2.     local _name
  3.     local _RollOut
  4.  
  5.     ---------------------------------------------------------------
  6.     -- init GUI
  7.     ---------------------------------------------------------------
  8.     include "$scripts\\pteroTools\\_propGroupUI.ms"
  9.     label        lblAngl        "Angle:"                                                        offset:[9,0]    align:#left    across:2
  10.     label        lblSpd        "Speed:"                                                        offset:[-7,0]    align:#right
  11.     spinner        spnAnglX    "X:"        range:[0, 360, 0]    type:#float        FieldWidth:35    offset:[-5,0]    align:#left    across:3
  12.     angle        angAnglX    ""            range:[0, 360, 0]    dir:#ccw        diameter:17        offset:[-5,0]    align:#center        color:(color 255 255 0)
  13.     spinner        spnSpdX        "X:"        range:[0, 999, 0]    type:#float        FieldWidth:35    offset:[5,0]
  14.     spinner        spnAnglY    "Y:"        range:[0, 360, 0]    type:#float        FieldWidth:35    offset:[-5,0]    align:#left    across:3
  15.     angle        angAnglY    ""            range:[0, 360, 0]    dir:#ccw        diameter:17        offset:[-5,0]    align:#center        color:(color 255 255 0)
  16.     spinner        spnSpdY        "Y:"        range:[0, 999, 0]    type:#float        FieldWidth:35    offset:[5,0]
  17.     spinner        spnAnglZ    "Z:"        range:[0, 360, 0]    type:#float        FieldWidth:35    offset:[-5,0]    align:#left    across:3
  18.     angle        angAnglZ    ""            range:[0, 360, 0]    dir:#ccw        diameter:17        offset:[-5,0]    align:#center        color:(color 255 255 0)
  19.     spinner        spnSpdZ        "Z:"        range:[0, 999, 0]    type:#float        FieldWidth:35    offset:[5,0]
  20.  
  21.      ---------------------------------------------------------------
  22.     -- Init RollOut
  23.     ---------------------------------------------------------------
  24.      fn fnKeyNames    = #( _name )
  25.      fn fnKeyUI        = #( #( spnAnglX, spnAnglY, spnAnglZ, spnSpdX, spnSpdY, spnSpdZ ) )
  26.     fn fnAngUI        = #( #( angAnglX, angAnglY, angAnglZ ) )
  27.      fn fnKeyDef        = #( #( 0, 0, 0, 0, 0, 0) )
  28.     fn fnUpdateAng    keyIDX:1 angUI:#(#()) keyUI:#(#()) c:3 = for n = 1 to c do try ( angUI[keyIDX][n].degrees = keyUI[keyIDX][n].value ) catch ()
  29.     fn fnName        = "Wobble"
  30.     fn fnRollOut    = WobbleRollOut
  31.     fn fnInitRollOut = (
  32.         local _name        = fnName()
  33.         local _RollOut    = fnRollOut()
  34.         fnAppendRollOut _RollOut _name
  35.     )
  36.     
  37.      
  38.      ---------------------------------------------------------------
  39.     -- fnApply()
  40.     ---------------------------------------------------------------
  41.     fn fnApply obj keyIDX read write del acq acqObj def sav = (
  42.         local keyNames    = fnKeyNames()
  43.         local keyUI        = fnKeyUI()
  44.         local angUI        = fnAngUI()
  45.         local keyDef    = if def then #( ( fnGetDefs keyNames[keyIDX] ) ) else fnKeyDef()
  46.         local keyArray    = #()
  47.         
  48.         if del do fnDeleteProp obj keyNames[keyIDX]                                                                ---- DELETE
  49.         
  50.         if sav do                                                                                                 ---- SAVE DEFAULT
  51.             try (
  52.                 for n = 1 to 6 do keyDef[keyIDX][n] = keyUI[keyIDX][n].value
  53.                 fnSetDefs ( keyNames[keyIDX] as string ) ( keyDef[keyIDX] as string )
  54.                 return true
  55.             ) catch ( print ( "Error: " + _name + ".fnApply() - save" ); return false )
  56.  
  57.         keyArray = if acq then fnReadProp acqObj keyNames[keyIDX] else fnReadProp obj keyNames[keyIDX]            ---- ACQUIRE
  58.         
  59.         if read or acq or del or def do (                                                                        ---- READ
  60.             for n = 0 to 5 do 
  61.                 if ( keyArray[(_firstValue + n)] == "" ) or ( keyArray[(_firstValue + n)] as string == "undefined" ) or def then
  62.                     try (
  63.                         keyUI[keyIDX][(n+1)].value = keyDef[keyIDX][(n+1)]
  64.                     ) catch ( print ( "Error: " + _name + ".fnApply() - read - default" ); return false )
  65.                 else
  66.                     try (
  67.                         keyUI[keyIDX][(n+1)].value = keyArray[(_firstValue + n)] as float
  68.                     ) catch ( print ( "Error: " + _name + ".fnApply() - read - properties" ); return false )
  69.             fnUpdateAng angUI:angUI keyUI:keyUI
  70.             if read or del do return true
  71.         )
  72.  
  73.         if write do                                                                                             ---- WRITE
  74.             try (
  75.                 keyArray[_keyName] = keyNames[keyIDX]
  76.                 del = true
  77.                 for n = 0 to 5 do (
  78.                     keyArray[(_firstValue + n)] = keyUI[keyIDX][n+1].value as string
  79.                     if keyUI[keyIDX][n+1].value > 0 do del = false
  80.                 )
  81.     
  82.                 if del then fnDeleteProp obj keyNames[keyIDX] else fnWriteProp obj keyArray
  83.                 return true
  84.             ) catch ( print ( "Error: " + _name + ".fnApply() - write" ); return false )
  85.     )
  86.  
  87.      ---------------------------------------------------------------
  88.     -- fnUpdate()
  89.     ---------------------------------------------------------------
  90.     fn fnUpdate keyIDX:1 read:false write:false del:false acq:false acqObj:undefined def:false sav:false = (
  91.         if not write do write = btnAuto.checked
  92.         for obj in selection do fnApply obj keyIDX read write del acq acqObj def sav
  93.     )
  94.  
  95.     ---------------------------------------------------------------
  96.     -- Event Handler
  97.     ---------------------------------------------------------------
  98.     on angAnglX            changed value    do ( spnAnglX.value = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  99.     on spnAnglX            changed value    do ( angAnglX.degrees = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  100.     on angAnglY            changed value    do ( spnAnglY.value = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  101.     on spnAnglY            changed value    do ( angAnglY.degrees = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  102.     on angAnglZ            changed value    do ( spnAnglZ.value = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  103.     on spnAnglZ            changed value    do ( angAnglZ.degrees = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  104.     on spnSpdX            changed value    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  105.     on spnSpdY            changed value    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  106.     on spnSpdZ            changed value    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  107.     on btnSet            pressed            do ( fnUpdate write:true; fnGetPropsToShow(); fnPrintLabel() )
  108.     on btnDef            pressed            do ( fnUpdate def:true; fnGetPropsToShow(); fnPrintLabel() )
  109.     on btnSav            pressed            do ( fnUpdate sav:true; fnGetPropsToShow(); fnPrintLabel() )
  110.     on btnDel            pressed            do ( fnUpdate del:true; fnGetPropsToShow(); fnPrintLabel() )
  111.     on btnAcq            changed state    do ( fnAcquire _RollOut; fnGetPropsToShow(); fnPrintLabel() )
  112.     on WobbleRollOut    open            do (
  113.         _name        = fnName()
  114.         _RollOut    = fnRollOut()
  115.         fnOpenRollOut _RollOut
  116.     )
  117.     on WobbleRollOut    close            do fnCloseRollOut _RollOut
  118. )
  119.